# 导入模块
import pandas as pd
# 读取数据
data = pd.read_csv('content.csv', encoding='utf-8')
# 获取数据品牌和数量
data["品牌"].value_counts()
# 将数据中关于美的品牌的数据分解出来
midea = data[data.品牌 == '美的']
# 得到美的的评论数据
comment = midea.评论
# 得到美的的评论数量
number_before = comment.shape
# 去重
comment = comment.drop_duplicates()
# 得到去重后美的的评论数量
number_after = comment.shape
# 得到美的的型号
midea['型号'].value_counts()


# 得到文本后需要预处理(文本去重,机械语料压缩,短句删除)
# 自定义函数实现机械压缩
def condense_1(str):
    for i in [1, 2]:
        j = 0
        while j < len(str)-2*i:
            if str[j: j+i] == str[j+i: j+2*i] and str[j: j+i] == str[j+2*i: j+3*i]:
                k = j+2*i
                while k+i < len(str) and str[j: j+i] == str[k+i: k+2*i]:
                    k += i
                str = str[: j+i] + str[k+i:]
            j += 1
        i += 1
    for i in [3, 4, 5]:
        j = 0
        while j < len(str)-2*i:
            if str[j: j+i] == str[j+i: j+2*i]:
                k = j+i
                while k+i < len(str) and str[j: j+i] == str[k+i: k+2*i]:
                    k += i
                str = str[: j+i] + str[k+i:]
            j += 1
        i += 1
    return str

# 去重前字符串长度:1411208
comment.astype('str').apply(lambda x: len(x)).sum()
# 去重后赋值给data1:
data1 = comment.astype('str').apply(lambda x: condense_1(x))
# 去重后的字符串长度:1362739
data1.astype('str').apply(lambda x: len(x)).sum()
# 得到data1每行数据的长度
data2 = data1.apply(lambda x: len(x))
# concat将数据进行合并    axis维度 0是行 1是列
data3 = pd.concat((data1, data2), axis=1)
# 更改列名
data3.columns = ['评论', '长度']

# 统计长度从2-20的数量
length = data3['长度'].value_counts().sort_index()[1:20]
# 短句删除前字符串行数:(53049,2)
length_data3 = data3.shape
# 短句剔除,易于分析情感
data4 = data3.loc[data3['长度'] > 4, '评论']
# 短句删除后字符串行数 (51810,)
length_data4 = data4.shape


